Intelligent flow designer

ABSTRACT

Methods, systems, apparatuses, and computer program products are provided for developing workflows. An input control may be rendered in association with the rendered representation of a workflow step corresponding to an input parameter. A developer is enabled to interact with the input control to select a parameter value for the input parameter. A workflow is enabled to be developed that includes a push notification workflow step configured to issue a push notification when encountered in the work flow and to wait for a response before enabling the workflow to continue. A workflow saved in a user folder is enabled to be selected for insertion into further workflows. A subscription workflow step may be selected for inclusion in a second workflow that is configured to wait for output information from a subscribed-to workflow before enabling the second workflow to continue.

CROSS REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. application Ser. No.15/274,935, filed on Sep. 23, 2016, titled “Intelligent Flow Designer,”now allowed, which claims the benefit of U.S. Provisional ApplicationNo. 62/329,083, filed on Apr. 28, 2016, titled “Visual Representation ofAPI Data within the Flow Designer,” both of which are incorporated byreference herein in their entireties.

BACKGROUND

A business or enterprise application is a computer program used bybusiness users to perform various business functions. Businessapplications are frequently developed when available off-the-shelfsoftware does not completely address the desired functionality. Manybusiness applications are interactive, having a graphical user interface(GUI) into which users can input data, use to submit data queries, useto perform operations, and/to use to view results. Consumer applicationsare less business focused, instead being focused on the needs of theconsumer.

Business and consumer users tend to depend on information technology(IT) personnel to code their applications due to application complexity,and the programming expertise required. Even merely designing anapplication to pull data from a remote source (e.g., a cloud service) isdifficult, typically requiring an experienced software developer.

SUMMARY

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

Methods, systems, apparatuses, and computer program products areprovided for developing user applications that include workflows, and inparticular, for developing workflows that access any number of availableservices to receive information, may include any number of conditionsthat are resolved based on the received information, may perform anynumber of actions based on the received information and conditions, andgenerate workflow results based on the combination of accessed servicesand conditions.

In one implementation, a first input control corresponding to a firstinput parameter is rendered in association with the renderedrepresentation of a workflow step. A developer is enabled to interactwith the first input control to select and set a first parameter valuefor the first input parameter. The first selected parameter value isprovided to (as input data) and affects operation of at least one of anapplication or service associated with the workflow step duringoperation of the workflow.

In another implementation, a workflow is enabled to be developed thatincludes push notification functionality. A push notification workflowstep is enabled to be selected by a developer for inclusion in aworkflow. The push notification workflow step is configured to issue apush notification when encountered in the work flow and to wait for aresponse before enabling the workflow to continue.

In still another implementation, a workflow saved in a user folder isenabled to be selected for insertion into further workflows, in asimilar manner as other workflow steps.

In another implementation, a subscription workflow step may be selectedfor inclusion in a workflow. The subscription workflow step isconfigured to wait for output information from a subscribed-to workflowbefore enabling the workflow containing the subscription workflow stepto execute.

Further features and advantages of the invention, as well as thestructure and operation of various embodiments, are described in detailbelow with reference to the accompanying drawings. It is noted that theinvention is not limited to the specific embodiments described herein.Such embodiments are presented herein for illustrative purposes only.Additional embodiments will be apparent to persons skilled in therelevant art(s) based on the teachings contained herein.

BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES

The accompanying drawings, which are incorporated herein and form a partof the specification, illustrate embodiments of the present applicationand, together with the description, further serve to explain theprinciples of the embodiments and to enable a person skilled in thepertinent art to make and use the embodiments.

FIG. 1 shows a workflow development system, according to an exampleembodiment.

FIG. 2 shows a flowchart providing a process for development ofworkflows, according to an example embodiment.

FIG. 3 shows a block diagram of a workflow designer application,according to an example embodiment.

FIG. 4 shows a block diagram of a display screen showing a browserwindow displaying an exemplary workflow, according to an exampleembodiment.

FIGS. 5-8 shows views of an exemplary workflow in various phases ofdevelopment using a development GUI, according to example embodiments.

FIG. 9 shows a block diagram of a system for operating a workflow,according to an example embodiment.

FIG. 10 shows a flowchart providing a process for executing a userapplication that includes one or more workflows, according to an exampleembodiment.

FIG. 11 shows a block diagram of workflow designer configured to analyzemetadata to enable visualization of parameters of a workflow step,according to an example embodiment.

FIG. 12 shows a flowchart providing a process for enabling a developerto configure input parameter values for a workflow, according to anexample embodiment.

FIG. 13 shows a block diagram view of a workflow development GUI priorto configuring input parameter values, according to an exampleembodiment.

FIG. 14 shows a block diagram view of the workflow development GUI ofFIG. 13, where example input parameter values have been selected,according to an example embodiment.

FIG. 15 shows a flowchart providing a process for enabling dynamicselection of input parameter values for a workflow input parameter,according to an example embodiment.

FIG. 16 shows a flowchart providing a process for making an API call fora list of input parameter values that may be selected from to choose aworkflow input parameter value, according to an example embodiment.

FIG. 17 shows a flowchart providing a process for dynamic modificationof input parameters based on a selection of an input parameter,according to an example embodiment.

FIGS. 18 and 19 show block diagram views of a workflow development GUIwhere alternative sets of input parameters are respectively presentedbased on different selections of a workflow input parameter value,according to an example embodiment.

FIG. 20 shows a block diagram view of a push notification workflow stepaccessible in a workflow library, according to an example embodiment.

FIG. 21 shows a flowchart providing a process for incorporating a pushnotification workflow step into a workflow, according to an exampleembodiment.

FIG. 22 shows a block diagram view of a workflow development GUI where apush notification action is integrated into a workflow, according to anexample embodiment.

FIG. 23 shows a flowchart providing a process for operating a pushnotification workflow step in a workflow, according to an exampleembodiment.

FIG. 24 shows a block diagram view of a mobile device displaying a GUIfor a workflow application displaying a push notification, according toan example embodiment.

FIG. 25 shows a flowchart providing a process for reusing workflows asworkflow steps, according to an example embodiment.

FIG. 26 shows a block diagram view of a workflow accessible as aworkflow step in a user folder, according to an example embodiment.

FIG. 27 shows a block diagram of a workflow designer that contains aworkflow step access controller, according to an example embodiment.

FIG. 28 shows a flowchart providing a process for enabling a workflow tosubscribe to another workflow, according to an example embodiment.

FIG. 29 shows a block diagram view of a workflow development GUI where aworkflow subscription step is integrated into a workflow, according toan example embodiment.

FIG. 30 shows a block diagram of an example computing device that may beused to implement embodiments.

The features and advantages of the present invention will become moreapparent from the detailed description set forth below when taken inconjunction with the drawings, in which like reference charactersidentify corresponding elements throughout. In the drawings, likereference numbers generally indicate identical, functionally similar,and/or structurally similar elements. The drawing in which an elementfirst appears is indicated by the leftmost digit(s) in the correspondingreference number.

DETAILED DESCRIPTION I. Introduction

The present specification and accompanying drawings disclose one or moreembodiments that incorporate the features of the present invention. Thescope of the present invention is not limited to the disclosedembodiments. The disclosed embodiments merely exemplify the presentinvention, and modified versions of the disclosed embodiments are alsoencompassed by the present invention. Embodiments of the presentinvention are defined by the claims appended hereto.

References in the specification to “one embodiment,” “an embodiment,”“an example embodiment,” etc., indicate that the embodiment describedmay include a particular feature, structure, or characteristic, butevery embodiment may not necessarily include the particular feature,structure, or characteristic. Moreover, such phrases are not necessarilyreferring to the same embodiment. Further, when a particular feature,structure, or characteristic is described in connection with anembodiment, it is submitted that it is within the knowledge of oneskilled in the art to effect such feature, structure, or characteristicin connection with other embodiments whether or not explicitlydescribed.

In the discussion, unless otherwise stated, adjectives such as“substantially” and “about” modifying a condition or relationshipcharacteristic of a feature or features of an embodiment of thedisclosure, are understood to mean that the condition or characteristicis defined to within tolerances that are acceptable for operation of theembodiment for an application for which it is intended.

Numerous exemplary embodiments are described as follows. It is notedthat any section/subsection headings provided herein are not intended tobe limiting. Embodiments are described throughout this document, and anytype of embodiment may be included under any section/subsection.Furthermore, embodiments disclosed in any section/subsection may becombined with any other embodiments described in the samesection/subsection and/or a different section/subsection in any manner

II. Example Embodiments for Development of Workflows

Business applications and consumer applications typically are createdwhen available off-the-shelf software does not completely addressdesired functionality. Many business and consumer applications areinteractive, having a graphical user interface (GUI) into which userscan input data, use to submit data queries, use to perform operations,and/to use to view results.

Users tend to depend on information technology (IT) personnel to codetheir applications due to application complexity and the programmingexpertise required. For instance, configuring an application to pulldata from a source of interest to enterprises or consumers (e.g., datafrom an SQL (structured query language) database, customer relationshipinformation from Salesforce.com of San Francisco, Calif., social networkinformation from Facebook® operated by Facebook, Inc. of Palo Alto,Calif., or Twitter® operated by Twitter, Inc. of San Francisco, Calif.)is a difficult process.

Embodiments enable easier development of user applications, includingbusiness applications and consumer applications. Developers are enabledto develop user applications in the form of workflows without having tobe expert programmers.

Example embodiments are described in the following sections fordevelopment of user application workflows. In the following description,a person that develops a user application using the techniques describedherein is referred to as a “developer,” to be distinguished from aperson that uses the user application at runtime (a “user” or “enduser”). It is noted, however, that a “developer,” as referred to herein,does not need to have expertise in computer programming The embodimentsdescribed herein enable application development without specialprogramming skills.

A. Example Workflow Development Embodiments

Development of workflows may be enabled in various ways in embodiments.For instance, FIG. 1 shows a workflow development system 100, accordingto an example embodiment. As shown in FIG. 1, system 100 includes acomputing device 102, storage 104, a first network-based application124A, a second network-based application 124B, and a server 134. Server134 includes a workflow designer 106 and a workflow library 118 (e.g.,in storage). Workflow designer 106 includes an UI generator 110 and aworkflow logic generator 112. Computing device 102 includes a displayscreen 108 and a browser 136. Storage 104 stores a local application122. System 100 is described as follows.

Computing device 102 may be any type of stationary or mobile computingdevice, including a mobile computer or mobile computing device (e.g., aMicrosoft® Surface® device, a laptop computer, a notebook computer, atablet computer such as an Apple iPad™, a netbook, etc.), a wearablecomputing device (e.g., a head-mounted device including smart glassessuch as Google® Glass™, etc.), or a stationary computing device such asa desktop computer or PC (personal computer). Server 134 may include oneor more server devices and/or other computing devices.

Local application 122 in storage 104 is an example of an applicationaccessible by computing device 102 without communicating over a network.Local application 122 may be configured to perform data processingand/or data hosting operations when executed by a processor of computingdevice 102, and may provide data 132 to workflows created by workflowdesigner 106 during runtime of those workflows. Local application 122may be any type of local application/service, such as a databaseapplication (e.g., QuickBooks®, a Microsoft® Excel® spreadsheet), amessaging application (e.g., Microsoft® Outlook®), a productivityapplication (e.g., Microsoft® Word®, Microsoft® PowerPoint®, etc.), oranother type of application. Although FIG. 1 shows a single localapplication, any number of local applications may be present atcomputing device 102, including numbers in the tens, hundreds, orgreater numbers.

First and second network-based applications 124A and 124B are examplesof network-based applications, also referred to as “cloud” applicationsor services. Network-based applications 124A and 124B are accessible bycomputing device 102 over network 126, may be configured to perform dataprocessing and/or data hosting operations, and may provide data 130A and130B, respectively, to workflows created by workflow designer 106 duringruntime of those workflows. Network-based applications 124A and 124B mayeach be any type of web accessible applications/services, such asdatabase applications, social networking applications, messagingapplications, financial services applications, news applications, searchapplications, web-accessible productivity applications, cloud storageand/file hosting applications, etc. Examples of such applicationsinclude a web-accessible SQL (structured query language) database,Salesforce.com™, Facebook®, Twitter®, Instagram®, Yammer®, LinkedIn®,Yahoo! ® Finance, The New York Times® (at www.nytimes.com), Googlesearch, Microsoft® Bing, Google Docs™, Microsoft® Office 365, Dropbox™,etc. Although FIG. 1 shows two network-based applications, any number ofnetwork-based applications may be accessible over network 126, includingnumbers in the tens, hundreds, thousands, or greater numbers.

Note that data 128, data 130A, data 130B, and data 132 may each includeany type of data, including messages, notifications, calculated data,retrieved data, and/or any other type of information requested or usableby a workflow.

Computing device 102 and server 134 may each include at least onenetwork interface that enables communications with each other and withnetwork-based applications 124A and 124B over network 126. Examples ofsuch a network interface, wired or wireless, include an IEEE 802.11wireless LAN (WLAN) wireless interface, a Worldwide Interoperability forMicrowave Access (Wi-MAX) interface, an Ethernet interface, a UniversalSerial Bus (USB) interface, a cellular network interface, a Bluetooth™interface, a near field communication (NFC) interface, etc. Furtherexamples of network interfaces are described elsewhere herein. Examplesof network 126 include a local area network (LAN), a wide area network(WAN), a personal area network (PAN), and/or a combination ofcommunication networks, such as the Internet.

Workflow designer 106 is configured to be operated/interacted with tocreate workflows. For instance, a developer may access workflow designer106 by interacting with an application at computing device 102 capableof accessing a network-based application, such as browser 136. Thedeveloper may use browser 136 to traverse a network address (e.g., auniform resource locator) to workflow designer 106, which invokes aworkflow designer GUI 116 (e.g., a web page) in a browser window 114.The developer is enabled to interact with workflow designer GUI 116 todevelop a workflow.

As shown in FIG. 1, workflow designer 106 includes UI generator 110 andworkflow logic generator 112. UI generator 110 is configured to transmitworkflow GUI information 140 (e.g., one or more web pages, imagecontent, etc.) to browser 136 to be displayed as workflow designer GUI116 in display screen 108 in browser window 114. Workflow designer GUI116 may be interacted with by the developer to select and configureworkflow steps into a workflow. For example, the developer may insertand sequence a plurality of workflow steps in workflow designer GUI 116,with one or more of the steps being associated with a local ornetwork-based application. Browser 136 stores the selected workflowsteps, corresponding configuration information, and workflow stepsequence information as constructed workflow information 138.Constructed workflow information 138 is transmitted to workflow logicgenerator 112 at server 134. Workflow logic generator 112 generatesworkflow logic 120 based on the assembled workflow represented byconstructed workflow information 138. The workflow represented byworkflow logic 120 may subsequently be invoked at runtime by an enduser.

During runtime of the workflow, workflow logic 120 may invoke operationof one or more local or network-based applications associated with theworkflow steps of workflow logic 120. Each workflow step may receiveinput data 128 from workflow designer GUI 116, data 132 from localapplication 122, data 130A or data 130B from one or both of local ornetwork-based applications 124A and 124B, and/or data from anotherworkflow step of workflow logic 120.

Workflow designer 106 may operate in various ways, to enable developmentof a workflow. For instance, in embodiments, workflow designer 106 mayoperate according to FIG. 2. FIG. 2 shows a flowchart 200 providing aprocess for development of workflows, according to an exampleembodiment. Flowchart 200 and workflow designer 106 are described asfollows with respect to FIGS. 3 and 4. FIG. 3 shows a block diagram ofworkflow designer 106, according to an example embodiment. As shown inFIG. 3, workflow designer 106 includes UI generator 110 and workflowlogic generator 112. UI generator 110 includes a workflow step gallerygenerator 302, a template gallery generator 304, a saved workflowselector 306, a step selector 308, and a step configuration UI generator310. Workflow logic generator 112 includes a workflow definitiongenerator 312 and an interface definition generator 314. FIG. 4 shows ablock diagram of display screen 108, illustrating an example of workflowdesigner GUI 116 displayed in browser window 402 on display screen 108,according to an example embodiment

Flowchart 200 of FIG. 2 begins with step 202. In step 202, developmentof a workflow is initiated. For example, in an embodiment, workflowdesigner 106 may be invoked by a developer interacting with browser 136at computing device 102. The developer may traverse a link or othernetwork address directed to workflow designer 106 at server 134, toinvoke workflow designer 106, causing workflow designer 106 to provideworkflow GUI information 140 (e.g., one or more web pages, imagecontent, etc.) to browser 136 to be displayed as workflow designer GUI116 in display screen 108 in browser window 114. Once invoked, thedeveloper may open an existing workflow for further development, or maybegin a new workflow.

For instance, a displayed page of workflow designer GUI 116 may displaya gallery or workflow steps generated by workflow step gallery generator302. The workflow step gallery includes a plurality of selectableworkflow steps. The workflow steps may be stored in workflow library118, and accessed for display by workflow designer GUI 116. Thedeveloper may select one of the workflow steps for inclusion in theirworkflow, and may proceed with configuring the contents of the workflowstep, and/or may add additional workflow steps to continue generatingtheir workflow.

For example, as shown in FIG. 4, workflow step gallery generator 302 mayenable steps 406A, 406B, and 406C to be selected for insertion into aworkflow 404 being assembled in workflow designer GUI 116. Any number ofworkflow steps may be inserted.

In another example, a displayed page of workflow designer GUI 116 maydisplay a template gallery generated by template gallery generator 304.The template gallery includes a plurality of selectable workflowtemplates, which each include one or more workflow steps pre-connectedfor operation. The workflow templates may be stored in workflow library118, and accessed for display by workflow designer GUI 116. Thedeveloper may select one of the workflow templates for inclusion intheir workflow, and may proceed with configuring the contents of theworkflow template, and/or may add additional workflow steps to theworkflow steps of the workflow template to generate a more complexworkflow.

For instance, in the example of FIG. 4, steps 406A and 406B may havebeen included in a workflow template placed in workflow 404, step 406Cmay have been subsequently added (e.g., from a workflow step gallery).

In another example, saved workflow selector 306 may enable the developerto select an existing, saved workflow to be opened for further editingin a displayed page of workflow designer GUI 116. The saved workflowsmay be stored in workflow library 118 or elsewhere. For example, savedworkflow selector 306 may display a list of saved workflows, may enablenavigation to a saved workflow, and/or may provide another mechanism forselecting a saved workflow for editing. The developer may then proceedwith further configuring the contents of the workflow, and/or may addadditional workflow steps to the workflow steps of the workflow togenerate a more complex workflow.

In step 204, selection of one or more steps for inclusion in theworkflow is enabled. When a developer is editing a workflow, stepselector 308 may enable the developer to select further workflow stepsfor inclusion in the workflow, and to order the steps. The workflowsteps may be accessed by step selector 308 in workflow library 118. Forinstance, step selector 308 may display a pull-down menu of workflowsteps, a scrollable and/or searchable list of available workflow steps,or may provide the workflow steps in another manner, and may enable thedeveloper to select any number of workflow steps from the list forinclusion in the workflow.

In one example, step selector 308 may enable a developer to select astep that is associated with a local application, such as Microsoft®Outlook®, or a network-based application, such as Facebook®. Stepselector 308 enables the steps to be chained together in a sequence,optionally with conditional steps, for inclusion in workflow logic 120.

In step 206, each of the selected steps in the workflow is enabled to beconfigured. In an embodiment, step configuration UI generator 310enables configuration of each workflow step in a workflow. Stepconfiguration UI generator 310 accesses each selected workflow step inworkflow library 118 to determine the configuration of the workflowstep, including all of its input parameters and any other selections orinformation that a user or developer needs to provide to the workflowstep to configure it For example, step configuration UI generator 310may generate a UI that enables the developer to type, navigate to, use apull-down menu, or otherwise enter input data into a text input box orother data input element (e.g., input parameter) of a workflow step. Thedeveloper may configure an output of a prior step to be input data for aworkflow step. Step configuration UI generator 310 may enable data orother objects to be copied and pasted, dragged and dropped, or otherwiseentered copied from elsewhere into data input boxes of a workflow step.

In step 208, workflow logic to implement the workflow is generated. Inan embodiment, workflow logic generator 112 is configured to package andgenerate workflow logic 120 based on constructed workflow information138 when the developer indicates the workflow is finished, such as whenthe developer interacts with workflow designer GUI 116 to save theworkflow. As shown in FIG. 3, workflow logic generator 112 receivesconstructed workflow information 138. Constructed workflow information138 indicates which workflow steps have been inserted into the workflow,their input parameter values, and their sequencing. Workflow logicgenerator 112 also receives selected workflow logic 320, which is theworkflow logic for each workflow step of the workflow as indicated inconstructed workflow information 138. In one example, workflow logicgenerator 112 retrieves workflow logic from workflow library 118 foreach workflow step indicated in constructed workflow information 138, toreceive selected workflow logic 320. Workflow logic generator 112generates workflow logic 120 for the workflow based on constructedworkflow information 138 and selected workflow logic 320. For example,workflow logic generator 112 may generate workflow logic 120 in the formof an executable file, a zip file, or other form, which may be executedin a standalone fashion, may be executed in a browser, or may beexecuted in another manner, depending on the particular type of workflowbeing generated.

With reference to FIG. 3, workflow logic generator 112 may generateworkflow logic 120 to include at least two components (e.g., files):workflow definition information 316 and interface definition information318. Workflow definition information 316 includes information thatdefines the sequence and operation of the workflow of workflow logic(e.g., lists the workflow step operations and their ordering/sequencing)and includes the parameter values for the workflow. For example,workflow definition information 316 may be generated to containinformation in the format of a JSON (JavaScript object notation) file orin another form. Interface definition information 318 includesinformation that defines the interfaces/parameters (e.g., inputs andoutputs) of the workflow steps of the workflow. For example, interfacedefinition information 318 may be generated to contain information inthe format of a Swagger (a specification for REST (representationalstate transfer) web services) file or in another form. For instance,each workflow step may be represented in workflow library 118 as API(application programming interface) metadata in Swagger format, definingwhat are the necessary inputs and outputs (parameters) of the workflowstep, such that a service may be accessed according to the APIdefinition. In such an implementation, the operations in the workflowdefinition information 316 refer to the corresponding API metadata inthe interface definition information 318 to give a complete structure ofa generated workflow (e.g., each sequenced workflow step/operationdefined with parameter values in the workflow definition information 316has a corresponding API, which is defined in the interface definitioninformation 318).

Accordingly, flowchart 200 and workflow designer 106 enable a developerto create workflows. FIGS. 5-8 shows views of an exemplary workflow invarious phases of development using a development GUI, according toexample embodiments. For example, each of FIGS. 5-8 show browser window402 displaying a corresponding view of workflow designer GUI 116 beingused to develop a workflow.

For instance, FIG. 5 shows browser window 402 including a workflow step502 and an add interface 504. Workflow step 502 was selected by adeveloper to be a first step in a workflow. Add interface 504 (e.g., abutton or other GUI control) may be interacted with by the developer toadd further workflow steps to the workflow.

As described above, a developer is enabled to select workflow step 502from a list or library of steps, a gallery of workflow steps, a templategallery, or elsewhere. A list, library, or gallery may include anynumber of workflow steps. The workflow steps may be associated withnetwork-based applications mentioned elsewhere herein or otherwise known(e.g., Dropbox™), and/or with local applications mentioned elsewhereherein or otherwise known (e.g., Microsoft® Outlook®). Each workflowstep is configured for plug-and-place into the workflow. Each workflowstep is configured with the appropriate logic and/or interface(s) toperform its respective function(s), which may include communicating witha local or remote application. For instance, a workflow step may beconfigured to transmit a query to an application (e.g., a search queryto a search engine, a database query to a database, a request for datafrom a social networking application, etc.), being pre-configured how toproperly transmit and format such a request to the application. Theworkflow step may be configured to receive a response to the request,being pre-configured how to parse the response for desired responsedata. As such, a developer of a workflow does not need to know how towrite program code in a programming language, to interface with complexapplication interfaces (e.g., application programming interfaces(APIs)), or to understand network communication protocols, as theworkflow steps are already setup. When a workflow step is plugged intoworkflow logic by a developer, the developer configures the inputs tothe workflow step (as described below), and the otherwise pre-configuredworkflow step handles any communications with other applications.

In FIG. 6, the developer has interacted with step 502 (e.g., by mouseclick, etc.) to cause step configuration UI generator 310 to generate aUI for configuration of step 502. For instance, in the example of FIG.6, workflow step 502 is configured to monitor for a file to be createdin a particular folder identified by the developer in a text input box(e.g., by typing, clicking on a navigator indicated by “ . . . ”, etc.).When workflow step 502 determines a file is added to the indicatedfolder, a workflow step following workflow step 502 is triggered. Thus,workflow step 502 may be considered a trigger step in this example.

For instance, in FIG. 7, the developer interacted with add interface 504to select a next workflow step 702. In an embodiment, interaction withadd interface 504 invokes step selector 308 in FIG. 3, which enables thedeveloper to select a workflow step. In the example of FIG. 7, workflowstep 702 is a conditional step. In embodiments, logical elements may beselected for inclusion in a workflow, including arithmetic logic (e.g.,summers, multipliers, etc.), conditional logic, etc., that operate basedon variable values determined in earlier workflow steps. The conditionof workflow step 702 enables the workflow to fork based on thedetermination of a condition (e.g., a variable value). The condition mayinclude an object name, a relationship (e.g., a logical relationship,such as equal to, includes, not equal to, less than, greater than,etc.), and a value, which are all defined by the developer interactingwith workflow step 702. Corresponding action steps may be performeddepending on which way the workflow forks based on the condition.

In one illustrative example of FIG. 7, the object name may be selected(e.g., from a list of possibilities) to be a name of the created file ofworkflow step 502, the relationship may be “contains” (e.g., selected bya pull-down menu) and the value may be “dummyfile” (e.g., typed in bythe developer). The condition evaluates to a “yes” condition if the filename contains “dummyfile,” which invokes first action workflow step 704,and evaluates to “no” condition if the file name does not contain“dummyfile,” which invokes second action workflow step 706. An actionmay be defined for one or both of the “yes” and “no” action workflowsteps 704 and 706 by the developer, if desired.

For example, in FIG. 8, the developer interacts with action workflowstep 704 to define an action. In this example, the developer is definingaction workflow step 704 by selecting a workflow step via step selector308. As shown in FIG. 8, a list of workflow steps 802A, 802B, 802C isdisplayed, from which the developer can select a workflow step (e.g., bymouse click, etc.) to be performed for action workflow step 704. Theworkflow step can be a trigger step, an action step, or a conditionstep. After selecting the workflow step, the developer may configure theworkflow step as described above. Furthermore, the developer mayconfigure an action for workflow step 706, may add further workflowsteps, etc., eventually being enabled to save the workflow.

It is noted that in some embodiments, a workflow step, such as firstworkflow step 502, may require credentials (e.g., a login and password)to access indicated data (e.g., to access a file at the locationindicated in the text input box in FIG. 6). As such, the developer maybe requested to provide credential information in association with firstworkflow step 502 so that when first workflow step 502 is performedduring runtime, the data may be accessed. Alternatively, the credentialsmay be requested of a user during runtime.

B. Example Runtime Embodiments

According to embodiments, end users may execute workflows developed asdescribed herein. During operation, an end user may interact with a GUIof the workflow, which may lead to workflow logic being executed. Theworkflow logic may execute locally (e.g., in a browser) and/or at aremote service (in “the cloud”). The workflow logic may access data ofone or more applications, local or network-accessible, as was configuredby the developer. Accordingly, the workflow performs its intendedfunctions.

FIG. 9 shows a block diagram of a system 900 for operating a workflowthat includes one or more workflow steps, according to an exampleembodiment. As shown in FIG. 9, system 900 includes a computing device902, first network-based application 124A, second network-basedapplication 124B, and server 134. Computing device 902 includes aworkflow application 904. Server 134 includes a workflow executionengine 906. System 100 is described as follows.

First and second network-based applications 124A and 124B are eachoptionally present, depending on the configuration of workflow logic120. Further network-based applications may be present, depending on theconfiguration of workflow logic 120.

Computing device 902 may be any type of stationary or mobile computingdevice described herein or otherwise known. Computing device 902 isconfigured to communicate with first and second network-basedapplications 124A and 124B and server 134 over network 126.

In one embodiment, workflows are executed at server 134 by workflowexecution engine 906, and workflow application 904 is a UI applicationthat enables a user at computing device 902 to interact with theexecuting workflows, such as by selecting and invoking the workflows,receiving communications from the executing workflows (e.g., messages,alerts, output data, etc.), providing requested input data to executingworkflows, etc. In such an embodiment, workflow application 904 may be aworkflow UI application associated with workflow execution engine 906(e.g., workflow application 904 may be an extension of workflowexecution engine 906) that may operate separate from or within a browserat computing device 902, or may be configured in another way. As shownin FIG. 9, workflow execution engine 906 may load workflow logic 102 fora selected workflow (e.g., selected from a workflow library by a user),and may execute workflow logic 102 to execute the workflow.

In another embodiment, workflow application 902 may be configured toexecute workflows at computing device 902. For instance, an end user ofcomputing device 902 may interact with a user interface of workflowapplication 902 to select and invoke a particular workflow (e.g.,selected from a workflow library). In such embodiments, workflow logic120 may operate separate from or in a browser at computing device 902,or may be configured in another way. As shown in FIG. 9, workflowapplication 904 may load workflow logic 120 for a selected workflow(e.g., selected from a workflow library by a user), and may executeworkflow logic 120 to execute the workflow.

In another embodiment, a first portion of workflow logic 120 may operatein workflow application 904 at computing device 902 and a second portionof workflow logic 120 may operate in workflow execution engine 906 atserver 134 and/or elsewhere.

FIG. 10 shows a flowchart 1000 providing a process for executingworkflow logic 120 of a workflow, according to an example embodiment.Flowchart 1000 is described as follows with respect to system 900 ofFIG. 9 for illustrative purposes.

Flowchart 1000 begins with step 1002. In step 1002, the workflow isexecuted. In an embodiment, an end user at computing device 902 maycause workflow logic 120 to be executed, such as by command line, byclicking/tapping or otherwise interacting with an icon representing theapplication, by selection in a browser, or in another manner Asdescribed above, workflow logic 120 may execute in workflow application904 at computing device 902 and/or in workflow execution engine 906 atserver 134. When executed, the workflow steps of workflow logic 120 areperformed in the configured sequence. Accordingly, one or more of theworkflow steps may make calls to corresponding applications/services toperform their functions, such as local application 122 (to return data132), network-based application 124A (to return data 130A),network-based application 124B (to return data 130B), and/or otherapplications, local or network-based.

In step 1004, the workflow GUI is displayed. Step 1004 is optional, asin some embodiments, a GUI is not displayed for a workflow. In anembodiment, the GUI may be displayed by workflow application 904 atcomputing device 902. When displayed, the user may interact with the GUIby reviewing displayed data (e.g., from a file, database record,spreadsheet, or other data structure read by the workflow), by enteringdata into the GUI (e.g., by typing, by voice, etc.), and/or byinteracting with one or more controls displayed by the GUI.

In step 1006, workflow logic is triggered based on an interaction withthe workflow. Step 1006 is optional in cases where one or more workflowsteps of a workflow require input from a user. In such cases, the userinteracts with a control in a GUI of workflow application 904 associatedwith a workflow step of workflow logic 120 to provide information thattriggers logic of the workflow step to operate.

In this manner, workflow logic 120 performs its functions, such asprocessing orders, tracking information, generating messages, processingdocuments to generate tasks or information, collecting feedback, and/orany other functions.

C. Example Embodiments for Visual Representation of API Data within theWorkflow Designer

According to embodiments, workflow designer 106 enables a workflow stepto be visualized for developers, including automatically determining anddisplaying the input parameters for the workflow steps for the developerto fill with parameter values. Workflow designer 106 may perform thisfunction by analyzing interface definition information associated withthe workflow step (e.g., a file defining an API for the workflow step)to automatically determine and display the input parameters for adisplayed workflow step. Workflow designer 106 may dynamically determinelists of selectable input values for the input parameters, and may alsodynamically determine further input parameters for the workflow stepbased on one or more parameter values selected by the developer.

As described above, interface definition information 318 (e.g., aSwagger file) may describe a set of APIs for workflow logic 120.However, Swagger is static about input parameters and output parameters,meaning that the input and output parameters of an API defined inSwagger are set (not variable). For instance, a particular API may haveinput parameter 1, input parameter 2, and input parameter 3 as threeinput parameters, and output parameter 1 as a sole output parameter.Conventionally, these four parameters for the API are static, and thusused every time the API is accessed.

In embodiments, developers are enabled to extend the lists of inputparameters and output parameters. This is accomplished by enabling adeveloper of an API corresponding to a workflow step to extend the APIto indicate where inputs can be pulled from, which may include a dynamiclist. Furthermore, the input and/or output parameters may change basedon particular selected input parameter values.

For example, FIG. 11 shows a block diagram of workflow designer 106configured to analyze metadata to enable visualization of a workflowstep, according to an example embodiment. Workflow designer 106 in FIG.11 is an example of workflow designer 106 shown in FIGS. 1 and 3. Asshown in FIG. 11, workflow designer 106 may include step configurationUI generator 310, a list retriever 1104, an input parameter selector1108, and a control populator 1110. Step configuration UI generator 310includes a metadata analyzer 1102. List retriever 1104 includes an APIcaller 1112. Workflow designer 106 of FIG. 11 is described as follows.

In particular, workflow designer 106 is described with respect to FIG.12. FIG. 12 shows a flowchart 1200 providing a process for enabling adeveloper to configure input parameter values for a workflow, accordingto an example embodiment. In an embodiment, workflow designer 106 mayoperate according to flowchart 1200. Note that not all steps offlowchart 1200 need be performed in all embodiments.

Flowchart 1200 begins with step 1202. In step 1202, a workflow step isenabled to be selected by a developer for inclusion in a workflow.Example techniques for enabling a developer to select a workflow stepfor inclusion in a workflow are described above, including with respectto step 204 of flowchart 200 (FIG. 2). For instance, step selector 308of FIG. 3 may be interacted with by a developer to select a workflowstep, and to insert the selected workflow step into a workflow, asdescribed above (e.g., with respect to FIG. 7). Alternatively, adeveloper may select a workflow step from a gallery (e.g., as describedabove with respect to workflow step gallery generator 302 of FIG. 3),may select a template that includes workflow steps (e.g., as describedabove with respect to template gallery generator 304 of FIG. 3), or mayselect and insert a workflow step into a workflow in another manner

In step 1204, a representation of the selected workflow step is renderedin a graphical user interface (GUI) displayed by a display screen of thecomputing device. As described above, such as with respect to FIGS. 5-7,selected workflow steps may be displayed (rendered) in a GUI, such as aGUI rendered by a browser, when selected by the developer using stepselector 308 or in another manner. In this manner, the developer canview and arrange the workflow steps into a workflow.

Reference is made to FIG. 13 for purposes of illustration. FIG. 13 showsa block diagram view of a browser window 402 displaying a workflowdevelopment GUI 1300, according to an example embodiment. Browser window402 is displayed in a display screen of a computing device, such asdisplay screen 108 in FIG. 4. In the example of FIG. 13, a developer hasselected and inserted several example workflow steps into a workflow.The workflow steps are rendered in browser window 402, includingworkflow steps 1302 and 1304, condition workflow step 1306, and firstand second action workflow steps 704 and 706. Workflow step 1302 is a“recurrence” step, workflow step 1304 is an “Http” step, first actionworkflow step 704 is a “send message” step, and second action workflowstep 706 is an “insert row” step. Steps 1302, 1304, 1306, 704, and 706may be selected and rendered in a GUI in any manner.

In step 1206, interface definition information is accessed for metadatadefining an API associated with the workflow step. As described above,each workflow step stored in workflow library 118 has correspondingworkflow definition information and interface definition information,which may have the form of a pair of files (e.g., a JSON file and aSwagger file, respectively). In an embodiment, metadata analyzer 1102 ofFIG. 11 may access the interface definition information defining an APIfor the workflow step selected in step 1202, which may include metadatadefining the input and output parameters of the workflow step.

In step 1208, the metadata is analyzed for a first input parameter ofthe API. In an embodiment, metadata analyzer 1102 of FIG. 11 may beconfigured to parse the interface definition information of the workflowstep to identify each input parameter in the interface definitioninformation in any manner, such as by a marker, a tag, a particularalphanumeric sequence, one or more predetermined symbols, etc., as wouldbe apparent to persons skilled in the relevant art(s).

In step 1210, a first input control corresponding to the first inputparameter is rendered in association with the rendered representation ofthe workflow step. In an embodiment, as described above, stepconfiguration UI generator 310 is configured to render, in associationwith the rendered representation of the workflow step selected in step1202, an input control corresponding to each input parameter determinedin step 1208. The input control type (e.g., a text box, a filenavigator, a pull down menu, etc.) for an input parameter may beindicated in the interface definition information, in association withthe input parameter, as a parameter of the input parameter or in anyother manner If no input control type is indicated for an inputparameter, a default input control type may be selected by stepconfiguration UI generator 310, such as a text box.

Note that step 1210 may be performed automatically by step configurationUI generator 310, or in response to developer input. For example, thedeveloper may interact with a user interface element provided inassociation with the workflow step selected in step 1202, or otherwisepresented in the workflow GUI (e.g., a single UI element for allworkflow steps, etc.), to cause the input control to be rendered inassociation with the workflow step.

Continuing the example of FIG. 13, FIG. 14 shows a block diagram view ofworkflow development GUI 1300, where several input parameters arerendered with corresponding input controls, according to an exampleembodiment. In an embodiment, step configuration UI generator 310selected the input controls for display based on an analysis of theinterface definition information files associated with each workflowstep. As shown in FIG. 14, a first input control 1402, which is a pulldown menu labeled “Frequency”, is rendered for workflow step 1302.Workflow step 704 includes three rendered input controls 1404, 1406, and1408 corresponding to three input parameters, shown as “From PhoneNumber” (pull down menu), “To Phone Number” (text box), and “Text” (textbox). Workflow step 706 includes an input control 1410, which is a pulldown menu labeled “Table Name, and as described further below, mayinclude further input parameters/input controls based on a selectionmade in input control 1410.

In step 1212, the developer is enabled to interact with the first inputcontrol to select a first parameter value for the first input parameter.In an embodiment, step configuration UI generator 310 is configured toenable the developer to interact with the input control rendered in step1210 for the workflow step selected in step 1202 to select a parametervalue for the input parameter. For instance, for a text box, thedeveloper is enabled to type (or speak using voice input, etc.) to fillin the text box with a parameter value. For a pull down menu, thedeveloper is enabled to invoke the menu and select a parameter valuedisplayed in the menu. For a file navigator, the developer is enable tointeract invoke the file navigator to navigate to and select a file,table, or other object to be the parameter value.

For example, as shown in FIG. 14, the developer interacted with the pulldown menu of first input control 1402 rendered for workflow step 1302 toselect a parameter value of “Minute.” With respect to workflow step 704,the developer interacted with the pull down menu of input control 1404to select a first phone number as the corresponding parameter value,with the text box of input control 1406 to input a second phone numberas the corresponding parameter value, and with the text box of inputcontrol 1408 to input desired text as the corresponding parameter value.

Note that in embodiments, the list of selectable parameter values of apull down menu (or other GUI element that enables selection frommultiple values) for a workflow step may be obtained dynamically. Inother words, rather than obtaining the list of selectable parametervalues from within the API interface definition information file for theworkflow step, the list of parameter values may be retrieved fromelsewhere. In this manner, the list does not have to be static (limitedto the values stored in the interface definition file), but instead candynamic, being changeable based on the contents of the list at thelocation it is maintained.

For instance, FIG. 15 shows a flowchart 1500 providing a process forenabling dynamic selection of input parameter values for a workflowinput parameter, according to an example embodiment. Flowchart 1500 isdescribed as follows.

Flowchart 1500 begins with step 1502. In step 1502, a dynamic list ofselectable values for the first input parameter value is retrieved. Inan embodiment, list retriever 1104 of FIG. 11 is configured to retrievea dynamic list of selectable values for an input parameter value. Forinstance, when a developer interacts with a pull down menu or other UIelement to display a list of selectable parameter values, stepconfiguration UI generator 310 may signal list retriever 1104 toretrieve the list of parameter values. List retriever 1104 may determinea location of the list based on an identity or address (for an entitythat maintains the list) stored in association with metadata for theworkflow step in the interface definition information file for theworkflow step or for the workflow as a whole.

For example, in an embodiment, step 1502 may be performed by listretriever 1104 according to FIG. 16. FIG. 16 shows a flowchart 1600providing a process for making an API call for a list of input parametervalues for a workflow input parameter, according to an exampleembodiment.

In step 1602 of flowchart 1600, the metadata is analyzed to determine anaddress to direct an API call to retrieve the dynamic list. In anembodiment, list retriever 1104 may parse metadata in the interfacedefinition information file for the workflow step or for the workflow asa whole to determine an address. The address may be identified in thefile by a parameter name (e.g., “dynamiclistaddress”) associated withthe API for the workflow step. The address may have any form, includingbeing a URL (uniform resource locator) or other type of URI (uniformresource identifier) or web address, a server name, a directory path,etc.

In step 1604, the API call is performed. In an embodiment, API caller1112 of list retriever 1104 is configured to perform an API call onbehalf of list retriever 1104, in a manner as would be known to personsskilled in the relevant art(s). The API call is made to the addressdetermined in step 1602, which may be local to a computing deviceexecuting workflow designer 106, or may be a remote computing device(e.g., a server, etc.), which may be communicated with over a network(e.g., the Internet).

In step 1606, the dynamic list is received. In response to the API callmade by API caller 1112, list retriever 1104 receives the dynamic list.The dynamic list may have any form, including XML (extensible markuplanguage), HTML (hypertext markup language), a file containing anothertype of code, a text file, etc.

Referring back to FIG. 15, in step 1504, the first input parameter valueis enabled to be selected from the dynamic list by interacting with thefirst input control. In an embodiment, step configuration UI generator310 displays the list retrieved in step 1502 in a pull down menu (orother UI element capable of displaying multiple selectable elements)when the developer invokes the pull down menu. The developer is thenenabled to select the desired parameter value for the input parameterfrom the displayed list of parameter values.

For example, with respect to FIG. 14, an input control 1410 for workflowstep 706 is a pulldown menu. In FIG. 14, a developer has invoked thepulldown menu (e.g., by clicking on the right-side inverted triangle) tobe displayed a list of selectable parameter values. The list may havebeen retrieved in any manner according to step 1502, including by APIcaller 1112 according to flowchart 1600. The developer may select any ofthe displayed, selectable parameter values (e.g., “AzureRsrceMgrHlth”,“Employees,” “Enter custom value”). The selected parameter value becomesthe parameter value for the input parameter associated with inputcontrol 1410.

Note that in one embodiment, the selection of a particular parametervalue for an input parameter has no effect on other input parameters fora workflow step. In another embodiment, the input parameters for aworkflow step may be dynamically modified based on a parameter valueselection.

For instance, FIG. 17 shows a flowchart 1700 providing a process fordynamic modification of input parameters based on a selection of aninput parameter, according to an example embodiment. In an embodiment,flowchart 1700 is performed by input parameter selector 1108 of FIG. 11.Flowchart 1700 and input parameter selector 1108 are described asfollows.

Flowchart 1700 begins with step 1702. In step 1702, a selection isreceived of the first parameter value from the dynamic list frominteraction with the first input control. For example, as describedabove with respect to step 1212 (FIG. 12), a developer is enabled toselect a parameter value based on an interaction with an input control,including being able to select a parameter value from a dynamic list(e.g., as described above with respect to flowchart 1500 of FIG. 15).

In step 1704, a second input parameter of the API is selected based onthe selection of the first parameter value. In an embodiment, inputparameter selector 1108 receives the parameter value selection made instep 1702, and selects one or more additional input parameters for theworkflow step based on the parameter value selection. For instance, inan embodiment, each parameter value listed in the dynamic list may be atable or other multi-parameter data entity. If the developer interactswith the input control in step 1702 to select a particular identifiedtable as a parameter value, each column of the selected table may becomean input parameter for the workflow step. Each table identified in thedynamic list may have its own corresponding collection of columns,different from the columns of other tables, which become inputparameters for the workflow step, which would be different from theinput parameters that would result from another table being selected.

In step 1706, a second input control corresponding to the second inputparameter is rendered in association with the rendered representation ofthe workflow step. In an embodiment, step configuration UI generator 310is configured to render in the workflow step the one or more additionalinput controls for the one or more additional input parameters selectedin step 1704.

In step 1708, the developer is enabled to interact with the second inputcontrol to select a second parameter value for the second inputparameter. Accordingly, after step configuration UI generator 310renders one or more additional input controls for the workflow step inthe workflow designer GUI corresponding to the additional inputparameter(s) (determined in step 1704), the developer may interact withthose additional input control(s) to select parameter values in the samemanner as described above for other input controls (e.g., with respectto step 1212 of FIG. 12).

For illustrative purposes, FIGS. 18 and 19 show block diagram views ofworkflow development GUI 1300 where alternative sets of input parametersare respectively presented based on different selections of an inputparameter in input control 1410 of FIG. 14, according to an exampleembodiment.

For instance, when a developer interacts with input control 1410 toselect the parameter value of “AzureRsrceMgrHlth”, additional inputparameters 1802, 1804, and 1806 shown in FIG. 18 may be selected byinput parameter selector 1108 and rendered in association with workflowstep 706. Input parameters 1802, 1804, and 1806 may correspond tocolumns of a table identified by “AzureRsrceMgrHlth.” When the developerinteracts with input control 1410 to select the parameter value of“Employees”, additional input parameters 1902 and 1904 shown in FIG. 19may be selected by input parameter selector 1108 and rendered inassociation with workflow step 706. Input parameters 1902 and 1904 maycorrespond to columns of a table identified by “Employees.” Any numberof input parameters may result, depending on the number of columns inthe corresponding table.

In the example of FIGS. 18 and 19, during runtime, an “insert row”operation is performed (upon the “no” condition for condition step 1306of FIG. 14), which inserts the parameter values entered in either FIG.18 or 19 (depending on which table was selected) into the correspondingtable.

As shown in FIGS. 18 and 19, the developer may proceed with selectinginput parameter values for each rendered input control. Such entry ofinput parameter values into input controls may be performed in variousways. As illustrated in FIG. 19, the developer may be enabled to selectparameter values from a list of output parameter from prior workflowsteps. For instance, workflow step 1304 of FIG. 3 labeled “Http” maygenerate output parameters labeled “Body” and “Status Code,” andworkflow step 706 labeled “Send Message” may generate output parameterslabeled “From Phone Number,” “Status,” etc. The developer may be enabledto select these output parameters to have their parameter values asinputs to input controls for input parameters for workflow steps. Forexample, in FIG. 19, “Status Code” is selected as an input parameter toinput control 1904 labeled “FirstName”, and “Body” is selected as aninput parameter to input control 1902 labeled “EmployeeID.” In theexamples of FIGS. 18 and 19, parameter values that are output values ofprior workflow steps are rendered as blocks with identifying text insideto distinguish them from manually entered parameter values. Note thatthe blocks may be distinguished by any other graphical means, and mayinclude further graphical features (e.g., color, font, etc.) to indicatevarious aspects, including being color coded to show which workflow stepthe parameter value is drawn from, etc.

Note that multiple output parameters may be selected as input to asingle input control for a same input parameter. For example, as shownin FIG. 19, “Status Code” and “From Phone Number” are output parametersof “Http” and “Send Message” workflow steps, respectively, and are bothselected as inputs in input control 1904 for the input parameter labeled“FirstName” for workflow step 706. In such case, the runtime parametervalues for the multiple selected output parameters input to the inputcontrol are concatenated to be a single input parameter value for theassociated input parameter.

Additionally and/or alternatively text may be manually input to an inputcontrol in combination with one or more output parameters input to thatsame input control for an input parameter.

Note that in a further embodiment, the output parameters of a priorworkflow step may be caused to automatically populate the correspondinginput parameters of a subsequent workflow step. For instance, in anembodiment, control populator 1110 of FIG. 11 may be configured toautomatically populate a second input control with a second inputparameter value that is an output parameter value of a prior workflowstep of the workflow. In an embodiment, control populator 1110 mayanalyze workflow step metadata in interface definition information,comparing output parameter names of workflow steps to input parameternames of subsequent workflow steps, and when a match is determined, mayautomatically populate the input controls for the matching inputparameters with the output parameters of the prior workflow step(s).

For instance, with respect to FIG. 18, a prior workflow step may haveoutput parameters of “Headers” and “To Phone Number”, which match theinput parameters associated with input controls 1804 and 1806.Accordingly, control populator 1110 may automatically populate inputcontrols 1804 and 1806 with the corresponding matching outputparameters.

It is noted that after selection (manual and/or automatic) of theparameter values, the developer may interact with workflow developmentGUI 1300 to save the selected parameter values for all workflow stepsinto workflow definition information 316 for the workflow beingdeveloped. In the same save operation, the interface definitioninformation for all workflow steps may be saved into interfacedefinition information 318 for the workflow being developed (e.g., asdescribed above with respect to FIG. 3), if not already saved there.

D. Example Embodiments for Approval/Rejection of a Notification

According to embodiments, workflow designer 106 enables a workflow to begenerated that includes a push notification to a user with an option toapprove or deny. The associated workflow waits until the user responds,and may resume execution depending on the response by the user to thepush notification. In an embodiment, the push notification is provided,and approval/rejection occurs, within a single app that implements theworkflow.

In one illustrative example, a workflow may include a workflow step thatmonitors for the creation of a new document in a service, and generatesan output indication of the new document creation. A push notificationworkflow step may be triggered by that output indication to issue a pushnotification to a user to approve or reject the document. The pushnotification may optionally include a link to the document that the usercan click on to view the document. The user can interact with a control(e.g., a virtual button, etc.) of the push notification on their deviceto approve or reject the document. The push notification step waits fora response from the user before continuing. Once the user responds, theworkflow may proceed to a conditional workflow step, which performsactions that depend on the response of the user (e.g., approve orreject) to the push notification, or the mere receipt of a response fromthe user may enable the workflow to continue on from the pushnotification workflow step.

Any kind and number of options may be provided to a user to respond to apush notification (e.g., indicate any one of approve, accept, deny,reject, etc.; provide the user's signature; provide an alphanumericresponse, etc.)

The push notification may be provided to a workflow application (in amobile computing device) that is associated with a workflow executionengine that executes the workflow, enabling mobile interactivity with anexecuting workflow, in an integrated manner.

Embodiments for push notification may be implemented in various ways inembodiments. For instance, FIG. 20 shows a block diagram view of a pushnotification workflow step 2002 accessible in workflow library 118,according to an example embodiment. In embodiments, a developerdeveloping a workflow may select push notification workflow step 2002from workflow library 118 for inclusion in a workflow as describedelsewhere herein (e.g., as described with respect to step 204 of FIG.2). Push notification workflow step 2002 includes logic (e.g., withinput and output parameters values defined by workflow definitioninformation and an API defined by interface definition information inthe form of two files, or other form) that executes a push notificationto a defined user and waits for a response from the user to the pushnotification.

For instance, in an embodiment, push notification workflow step 2002 maybe integrated into a workflow according to FIG. 21. FIG. 21 shows aflowchart 2100 providing a process for incorporating a push notificationworkflow step into a workflow, according to an example embodiment.Flowchart 2100 is described as follows.

In step 2102, a push notification workflow step is enabled to beselected by a developer for inclusion in a workflow that includes atleast one other workflow step, the push notification workflow stepconfigured to issue a push notification when encountered in the workflow and to wait for a response before enabling the workflow tocontinue. For example, step selector 308 of FIG. 3 may be configured toenable a push notification workflow step 2002 to be selected by adeveloper for inclusion in a workflow that includes at least one otherworkflow step. As described herein, push notification workflow step 2002is configured to issue a push notification when encountered in theworkflow and to wait for a response before enabling the workflow tocontinue.

Note alternatively, push notification workflow step 2002 may be includedin a template selectable in a template gallery generated using templategallery generator 304, may be selectable from a workflow step gallerygenerated using workflow step gallery generator 302, or may be selectedin another manner for inclusion in a workflow.

In step 2104, a representation of the selected push notificationworkflow step is rendered in a graphical user interface (GUI) displayedby a display screen of the computing device. Step selector 308 isconfigured to render a representation of push notification workflow step2002 in a graphical user interface (GUI) displayed by a display screenof the computing device, such as workflow designer GUI 116 displayed indisplay screen 108 in FIG. 3. In an embodiment, step configuration UIgenerator 310 is configured to enable configuration of the selected pushnotification to define at least one recipient (to receive the pushnotification) and at least one response option for the at least onerecipient, and to enable the configured push notification to be saved toworkflow logic.

For example, FIG. 22 shows a block diagram view of a workflowdevelopment GUI 2200 where a push notification action is integrated intoa workflow, according to an example embodiment. As shown in FIG. 22, aworkflow step 502 is followed in a workflow by a push notificationworkflow step 2202 selected by a developer. The developer configurespush notification workflow step 2202. For instance, the developer mayindicate a recipient for the push notification (e.g., by email address,phone number, or other suitable identifier), may describe the request(e.g., “Please approve the attached document”, “please provide yoursignature,” etc.), and the description may attach or optionally includea link to a document or other item for the recipient to view, and maydefine one or more options for the recipient's selection. For instance,the developer may interact with step configuration UI generator 310 todefine one or more controls (e.g., push buttons, check boxes, radiobuttons, pull-down menus, etc.) that indicate respective selections(e.g., “approve,” “deny”, “fill in P.O. number,” etc.).

Furthermore, as shown in FIG. 22, the developer may include a conditionworkflow step 2204 in the workflow following the push notificationworkflow step 2202 that performs one or more actions based on a responseto the push notification received from a user (e.g., “email document,”“delete document,” “generate invoice,” etc.).

In embodiments, push notification functionality may operate in workflowsin various ways. For instance, FIG. 23 shows a flowchart 2300 providinga process for operating a push notification workflow step in a workflow,according to an example embodiment. Flowchart 2300 is described asfollows with respect to FIG. 24. FIG. 24 shows a block diagram view of amobile device 2402 executing a workflow application 2412 configured toenable push notification, according to an example embodiment.

Flowchart 2300 begins with step 2302. In step 2302, a workflowapplication is executed in the mobile computing device that isconfigured to interface with an executing workflow. For example, asshown in FIG. 24, workflow application 2412 executes in mobile device2402. Workflow application 2412 is an example of workflow application904 of FIG. 9. In one embodiment, workflow application 2412 may be aclient/local application component of a client-server application thatoperates workflows. A server-side component of the client-serverapplication may execute in one or more servers and communicate withworkflow application 2412 over a network (e.g., network 126 of FIG. 9).In another embodiment, workflow application 2412 may operate entirely inmobile device 2402. Workflow application 2412 may generate a userinterface in the form of workflow app GUI 2406 to enable userinteraction with workflow application 2412 at mobile device 2402.Workflow application 2412 may be browser-based or execute independent ofa browser in mobile device 2402.

In step 2304, a push notification is received at the workflowapplication from a workflow step of the workflow. As shown in FIG. 24,in a client-server implementation, workflow application 2412 may receivea push notification 2414 from the server component of the applicationthat runs an associated workflow. In another embodiment, workflowapplication 2412 operates the workflow itself and generates the pushnotification internally. The push notification is received/generatedbecause a push notification workflow step (e.g., step 2002 of FIG. 20)has been reached in the workflow. The push notification workflow stepgenerates and transmits push notification 2414 to elicit a response fromthe user of mobile device 2402.

In step 2306, a representation of the push notification is rendered in agraphical user interface (GUI) of the workflow application. As shownFIG. 24, workflow application 2412 may cause a representation of thepush notification to be displayed in workflow app GUI 2406, such as inthe form of a push notification control 2418. Push notification control2418 may have any form to display information to the user, includingtext, images, video, etc., and may display one or more control elementsfor interaction by the user, such as buttons, text boxes, check boxes,menus, etc. In the example of FIG. 24, push notification control 2418includes first and second options 2408 and 2410, displayed as buttons.Push notification control 2418 may be configured to be displayed ondisplay screen 2404 when mobile device 2402 is locked, unlocked, and/orin any other configuration as desired.

In step 2308, a user of the mobile computing device is enabled to selecta response option of the indicated at least one response option. In anembodiment, the user of mobile device 2402 may interact withnotification control 2418 to select a response option for pushnotification 2414. For example, the user may press a displayed button,check a displayed box, select a menu option, etc. to provide theirresponse indication. In the example of FIG. 24, the user may select oneof first option 2408 or second option 2410.

Note that push notification control 2418 may also provide links to oneor more documents, web pages, or other objects for the user to reviewprior to making their selection. The user may click the link(s), reviewany necessary materials, and then make their selection by interactingwith the displayed response controls.

In step 2310, a selected response option is provided to the workflowstep to enable the workflow to continue. As shown in FIG. 24, workflowapplication 2412 receives the response option selected by the user atworkflow app GUI 2406. Workflow application 2412 may optionally processthe response option, then as shown in FIG. 24, in a client/serverimplementation, may transmit the selected response option 2416 to theserver. In another embodiment, workflow application 2412 executes thelogic of the workflow internally, and thus does not transmit selectedresponse option 2416 from mobile device 2402, but instead uses selectedresponse option 2416 itself. The workflow operating at the server orinternal to workflow application 2412 in mobile device 2402 receivesselected response option 2416, which enables the workflow to continueoperation. A conditional workflow step of the workflow may select anoperation path (e.g., branches or forks) based on the contents/value ofselected response option 2416.

E. Example Embodiments for Nested Workflows

Embodiments enable workflows to be generated and saved as discreteworkflow steps, which can in turn be selected and placed in furtherworkflows under development. In this manner, workflows may be nestedinside of each other to build workflows with greater complexity.

For example, a workflow can be generated by a developer as describedabove, by inserting and interconnecting workflow steps in the workflow,and saving the workflow. In an embodiment, a saved workflow may be savedto workflow library 118 or another location (e.g., a personal folder ofthe developer) as workflow logic 120, which may include workflowdefinition information 316 and interface definition information 318 as apair of files (or other form) to define the workflow in a similar manneras a workflow step. If other developers can access the storage location,the workflow can be “shared” with them. The other developers may beenabled to select the workflow in the same manner as a workflow stepfrom workflow library 118, for inclusion in another workflow underdevelopment.

In one embodiment, a workflow may be saved in this manner without havinginput parameter values selected. In such case, being more generic, theworkflow may be saved as a form of “template,” such as the templatesmade accessible by template gallery generator 304. In anotherembodiment, a workflow may be saved with input parameter values selected(e.g., as described above with respect to flowchart 1200 of FIG. 12). Insuch case, it may be desirable for the workflow to be saved to a lesspublically accessible folder, such a folder personal/private to thedeveloper. This is because the input parameter values saved with theworkflow may include information specific to the developer, potentiallyincluding personal information, which may not be desirable todisseminate to others. Because the workflow is saved with inputparameter values, the workflow is accessible as a complete workflow forinsertion into other workflows in the same manner as a workflow step.

Note that access to the workflow in workflow library 118 or elsewheremay be restricted based on a registered privilege level assigned to theworkflow, including personal, private, corporate, world access, etc.Workflows having a higher privilege level than that of a developer maynot be displayed to the developer (may be hidden) when the developerperuses workflow library 118 (or other folder).

Accordingly, in embodiments, a workflow may be generated andincorporated in other workflows in various ways. For instance, FIG. 25shows a flowchart 2500 providing a process for reusing workflows asworkflow steps, according to an example embodiment. Flowchart 2500 isdescribed as follows.

Flowchart 2500 begins with step 2502. In step 2502, a developer isenabled to interact with a workflow development graphical user interface(GUI) displayed by a display screen of the computing device to build afirst workflow. Embodiments are described in detail above for enablingdevelopers to generate workflows by interacting with workflow designerGUI 116 (of workflow designer 106), at least with reference to FIGS.1-8.

In step 2504, first workflow logic is generated that defines the firstworkflow. In one example, as described above, workflow logic generator112 generates workflow logic 120, which is logic defining a builtworkflow.

In step 2506, the developer is enabled to save the first workflow logicas a selectable workflow step in a user library. As described above,workflow logic generator 112 (FIGS. 1 and 3) is configured to packageand generate workflow logic 120 based on constructed workflowinformation 138, which the developer can save as a workflow. FIG. 26shows a block diagram view of a workflow 2604 that has been saved in auser folder 2602, which may be a personal library for the developer,according to an example embodiment. Workflow 2604 contains workflowlogic (e.g., workflow logic 120), and includes input parameter values(e.g., selected according to flowchart 1200 of FIG. 12 or in anothermanner). In this manner, workflow 2604 is not a generic workflowtemplate, but instead is a fully-configured operational workflow.

In step 2508, access is enabled to the selectable workflow step in theuser library for insertion into further workflows. As shown in FIG. 27,workflow designer 106 may include a workflow step access controller2702. Workflow step access controller 2702 is configured to enableaccess to workflow 2604 in user folder 2602, in a similar manner to theway workflow steps can be selected from a workflow library. Inparticular, workflow step access controller 2702 enables a developer toselect and insert workflow 2604 into further workflows in a similarmanner as a workflow step is selected from workflow library 118 (FIG. 1)(e.g., by step selector 308 of FIG. 3).

Note that in an embodiment, workflow designer 106 may assign a privilegelevel to workflow 2604. The privilege may be assigned automatically(e.g., based on the folder in which the workflow is stored) or manuallyby a developer interacting with workflow designer GUI 116. In thismanner, workflow step access controller 2702 may restrict subsequentattempts to access workflow 2604 in user folder 2602 based on theassigned privilege level.

F. Example Embodiments for Extended Workflows to Link End-to-End

In embodiments, a second workflow may subscribe to a first workflow,thereby enabling the output of the first workflow to flow into thesecond workflow. By subscribing, there is no need for a message bus orservice bus to link the workflows. The first workflow is isolated fromthe second workflow. However, the second workflow references and iscoupled to the first workflow by this reference. The second workflow maybe inactive until the first workflow is complete, be notified of itscompletion due to the first workflow publishing its outputs/results(e.g., to a log file, to a publication document, etc.), and uponreceiving this notification, the second workflow may execute itsfunctions in otherwise complete independence from the first workflow.The second workflow may optionally receive the output data of the firstworkflow as input data to its own workflow steps.

Subscription by a second workflow to a first workflow may be performedin various ways. For instance, FIG. 28 shows a flowchart 2800 providinga process for enabling a workflow to subscribe to another workflow,according to an example embodiment. Flowchart 2800 is described asfollows.

Flowchart 2800 begins with step 2802. In step 2802, a subscriptionworkflow step is enabled to be selected by a developer for inclusion inthe second workflow. FIG. 20 shows a block diagram view of an examplesubscription workflow step 2004 accessible in workflow library 118. Inembodiments, a developer developing a workflow may select subscriptionworkflow step 2004 from workflow library 118 for inclusion in a workflowas described elsewhere herein (e.g., as described with respect to step204 of FIG. 2). Subscription workflow step 2004 is configurable by adeveloper to monitor for the completion of a designated first workflow,and upon detecting the completion, to enable a second workflow in whichsubscription workflow step 2004 is included to begin execution. In anembodiment, subscription workflow step 2004 may receive one or moreoutputs of the first workflow, and may enable the second workflow tobegin execution based on one or more conditions being fulfilled by theoutputs of the first workflow.

Step selector 308 of FIG. 3 may be configured to enable subscriptionworkflow step 2004 to be selected by a developer for inclusion in aworkflow that includes at least one other workflow step. Alternatively,subscription workflow step 2004 may be included in a template that isselectable in a template gallery generated using template gallerygenerator 304, may be selectable from a workflow step gallery generatedusing workflow step gallery generator 302, or may be selected in anothermanner for inclusion in a workflow.

Referring back to FIG. 28, in step 2804, a representation of theselected subscription workflow step is rendered in a graphical userinterface (GUI) displayed by a display screen of the computing device.Step selector 308 (or other selector type) is configured to render arepresentation of subscription workflow step 2004 in a graphical userinterface (GUI) displayed by a display screen of the computing device,such as workflow designer GUI 116 displayed in display screen 108 inFIG. 3.

For example, FIG. 29 shows a block diagram view of a workflowdevelopment GUI 2900 where a workflow subscription step 2902 isintegrated into a workflow, according to an example embodiment. In FIG.29, the developer has selected (e.g., from workflow library 118) andplaced workflow subscription step 2902 in GUI 2800, and has interactedwith workflow subscription step 2902 (e.g., by mouse click, etc.) tocause step configuration UI generator 310 to generate a UI forconfiguration workflow subscription step 2902. Workflow subscriptionstep 2902 is configured to monitor for a workflow to complete, such asby monitoring output data or receiving a signal when the workflowcompletes, such as an indication stored in a log file, etc.

In step 2806, a subscription selection control is rendered in therendered representation of the selected subscription workflow step. Inan embodiment, as described above, step configuration UI generator 310is configured to render, in association with the rendered representationof subscription workflow step 2004 selected in step 2802, a subscriptionselection control that enables a subscription selection input parametervalue to be provided. Any suitable control type may be used (e.g., atext box, a file navigator, a pull down menu, etc.), which may beindicated in the interface definition information associated withsubscription workflow step 2004.

For instance, as shown in FIG. 29, a subscription selection control 2904is rendered in subscription workflow step 2902. In this example, control2904 is shown as a navigator, but in other embodiments, may be anothercontrol type.

In step 2808, the selected subscription workflow step is enabled to beconfigured to subscribe to a first workflow indicated by interaction bythe developer with the subscription selection control. For instance, asshown in FIG. 29, a developer is enabled to indicate theworkflow-to-be-monitored in subscription selection control 2904 such asby typing, by clicking on a navigator control (e.g., indicated by “ . .. ”.), or in another manner Furthermore, as described more fullyelsewhere herein, input parameters of the workflow containingsubscription workflow step 2004 may be configured to receive outputparameter values of the subscribed-to workflow as input parametervalues.

In step 2810, the configured subscription workflow step is saved toworkflow logic that defines the second workflow. As described above,workflow logic generator 112 (FIGS. 1 and 3) is configured to packageand generate workflow logic 120 based on constructed workflowinformation 138, which the developer can save as a workflow. Theworkflow can be executed to perform its functions.

Accordingly, when the workflow designed in accordance with FIG. 29 isexecuted (at runtime), workflow subscription step 2902 monitors for thecompletion of the workflow subscribed to (in step 2808). When workflowsubscription step 2902 determines the subscribed-to workflow hascompleted, the workflow of FIG. 29 receives output data of thesubscribed-to workflow (e.g., from a log file, etc.), and a workflowstep following workflow subscription step 2902 (not shown in FIG. 29) istriggered. Thus, workflow subscription step 2902 may be considered atrigger step in this example. The outputs of the subscribed-to workflowmay be input parameter values for the designed workflow.

III. Example Mobile and Stationary Device Embodiments

Computing device 102, workflow designer 106, UI generator 110, workflowlogic generator 112, local application 122, network-based application124A, network-based application 124B, server 134, workflow step gallerygenerator 302, template gallery generator 304, saved workflow selector306, step selector 308, step configuration UI generator 310, workflowdefinition generator 312, interface definition generator 314, computingdevice 902, workflow application 904, workflow execution engine 906,metadata analyzer 1102, list retriever 1104, input parameter selector1108, control populator 1110, API caller 1112, mobile device 2402,workflow application 2412, workflow step access controller 2702,flowchart 200, flowchart 1000, flowchart 1200, flowchart 1500, flowchart1600, flowchart 1700, flowchart 2100, flowchart 2300, flowchart 2500,and flowchart 2800 may be implemented in hardware, or hardware combinedwith software and/or firmware. For example, workflow designer 106, UIgenerator 110, workflow logic generator 112, local application 122,network-based application 124A, network-based application 124B, server134, workflow step gallery generator 302, template gallery generator304, saved workflow selector 306, step selector 308, step configurationUI generator 310, workflow definition generator 312, interfacedefinition generator 314, computing device 902, workflow application904, workflow execution engine 906, metadata analyzer 1102, listretriever 1104, input parameter selector 1108, control populator 1110,API caller 1112, workflow application 2412, workflow step accesscontroller 2702, flowchart 200, flowchart 1000, flowchart 1200,flowchart 1500, flowchart 1600, flowchart 1700, flowchart 2100,flowchart 2300, flowchart 2500, and/or flowchart 2800 may be implementedas computer program code/instructions configured to be executed in oneor more processors and stored in a computer readable storage medium.Alternatively, workflow designer 106, UI generator 110, workflow logicgenerator 112, local application 122, network-based application 124A,network-based application 124B, server 134, workflow step gallerygenerator 302, template gallery generator 304, saved workflow selector306, step selector 308, step configuration UI generator 310, workflowdefinition generator 312, interface definition generator 314, computingdevice 902, workflow application 904, workflow execution engine 906,metadata analyzer 1102, list retriever 1104, input parameter selector1108, control populator 1110, API caller 1112, workflow application2412, workflow step access controller 2702, flowchart 200, flowchart1000, flowchart 1200, flowchart 1500, flowchart 1600, flowchart 1700,flowchart 2100, flowchart 2300, flowchart 2500, and/or flowchart 2800may be implemented as hardware logic/electrical circuitry.

For instance, in an embodiment, one or more, in any combination, ofworkflow designer 106, UI generator 110, workflow logic generator 112,local application 122, network-based application 124A, network-basedapplication 124B, server 134, workflow step gallery generator 302,template gallery generator 304, saved workflow selector 306, stepselector 308, step configuration UI generator 310, workflow definitiongenerator 312, interface definition generator 314, computing device 902,workflow application 904, workflow execution engine 906, metadataanalyzer 1102, list retriever 1104, input parameter selector 1108,control populator 1110, API caller 1112, workflow application 2412,workflow step access controller 2702, flowchart 200, flowchart 1000,flowchart 1200, flowchart 1500, flowchart 1600, flowchart 1700,flowchart 2100, flowchart 2300, flowchart 2500, and/or flowchart 2800may be implemented together in a SoC. The SoC may include an integratedcircuit chip that includes one or more of a processor (e.g., a centralprocessing unit (CPU), microcontroller, microprocessor, digital signalprocessor (DSP), etc.), memory, one or more communication interfaces,and/or further circuits, and may optionally execute received programcode and/or include embedded firmware to perform functions.

FIG. 30 depicts an exemplary implementation of a computing device 3000in which embodiments may be implemented. For example, any of computingdevice 102, server 134, and mobile device 2402 may be implemented in oneor more computing devices similar to computing device 3000 in stationaryor mobile computer embodiments, including one or more features ofcomputing device 3000 and/or alternative features. The description ofcomputing device 3000 provided herein is provided for purposes ofillustration, and is not intended to be limiting. Embodiments may beimplemented in further types of computer systems, as would be known topersons skilled in the relevant art(s).

As shown in FIG. 30, computing device 3000 includes one or moreprocessors, referred to as processor circuit 3002, a system memory 3004,and a bus 3006 that couples various system components including systemmemory 3004 to processor circuit 3002. Processor circuit 3002 is anelectrical and/or optical circuit implemented in one or more physicalhardware electrical circuit device elements and/or integrated circuitdevices (semiconductor material chips or dies) as a central processingunit (CPU), a microcontroller, a microprocessor, and/or other physicalhardware processor circuit. Processor circuit 3002 may execute programcode stored in a computer readable medium, such as program code ofoperating system 3030, application programs 3032, other programs 3034,etc. Bus 3006 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. System memory 3004 includes readonly memory (ROM) 3008 and random access memory (RAM) 3010. A basicinput/output system 3012 (BIOS) is stored in ROM 3008.

Computing device 3000 also has one or more of the following drives: ahard disk drive 3014 for reading from and writing to a hard disk, amagnetic disk drive 3016 for reading from or writing to a removablemagnetic disk 3018, and an optical disk drive 3020 for reading from orwriting to a removable optical disk 3022 such as a CD ROM, DVD ROM, orother optical media. Hard disk drive 3014, magnetic disk drive 3016, andoptical disk drive 3020 are connected to bus 3006 by a hard disk driveinterface 3024, a magnetic disk drive interface 3026, and an opticaldrive interface 3028, respectively. The drives and their associatedcomputer-readable media provide nonvolatile storage of computer-readableinstructions, data structures, program modules and other data for thecomputer. Although a hard disk, a removable magnetic disk and aremovable optical disk are described, other types of hardware-basedcomputer-readable storage media can be used to store data, such as flashmemory cards, digital video disks, RAMs, ROMs, and other hardwarestorage media.

A number of program modules may be stored on the hard disk, magneticdisk, optical disk, ROM, or RAM. These programs include operating system3030, one or more application programs 3032, other programs 3034, andprogram data 3036. Application programs 3032 or other programs 3034 mayinclude, for example, computer program logic (e.g., computer programcode or instructions) for implementing workflow designer 106, UIgenerator 110, workflow logic generator 112, local application 122,network-based application 124A, network-based application 124B, server134, workflow step gallery generator 302, template gallery generator304, saved workflow selector 306, step selector 308, step configurationUI generator 310, workflow definition generator 312, interfacedefinition generator 314, computing device 902, workflow application904, workflow execution engine 906, metadata analyzer 1102, listretriever 1104, input parameter selector 1108, control populator 1110,API caller 1112, workflow application 2412, workflow step accesscontroller 2702, flowchart 200, flowchart 1000, flowchart 1200,flowchart 1500, flowchart 3000, flowchart 1700, flowchart 2100,flowchart 2300, flowchart 2500, and/or flowchart 2800 (including anysuitable step of flowcharts 200, 1000, 1200, 1500, 1600, 1700, 2100,2300, 2500, 2800), and/or further embodiments described herein.

A user may enter commands and information into the computing device 3000through input devices such as keyboard 3038 and pointing device 3040.Other input devices (not shown) may include a microphone, joystick, gamepad, satellite dish, scanner, a touch screen and/or touch pad, a voicerecognition system to receive voice input, a gesture recognition systemto receive gesture input, or the like. These and other input devices areoften connected to processor circuit 3002 through a serial portinterface 3042 that is coupled to bus 3006, but may be connected byother interfaces, such as a parallel port, game port, or a universalserial bus (USB).

A display screen 3044 is also connected to bus 3006 via an interface,such as a video adapter 3046. Display screen 3044 may be external to, orincorporated in computing device 3000. Display screen 3044 may displayinformation, as well as being a user interface for receiving usercommands and/or other information (e.g., by touch, finger gestures,virtual keyboard, etc.). In addition to display screen 3044, computingdevice 3000 may include other peripheral output devices (not shown) suchas speakers and printers.

Computing device 3000 is connected to a network 3048 (e.g., theInternet) through an adaptor or network interface 3050, a modem 3052, orother means for establishing communications over the network. Modem3052, which may be internal or external, may be connected to bus 3006via serial port interface 3042, as shown in FIG. 30, or may be connectedto bus 3006 using another interface type, including a parallelinterface.

As used herein, the terms “computer program medium,” “computer-readablemedium,” and “computer-readable storage medium” are used to refer tophysical hardware media such as the hard disk associated with hard diskdrive 3014, removable magnetic disk 3018, removable optical disk 3022,other physical hardware media such as RAMs, ROMs, flash memory cards,digital video disks, zip disks, MEMs, nanotechnology-based storagedevices, and further types of physical/tangible hardware storage media(including memory 1220 of FIG. 12). Such computer-readable storage mediaare distinguished from and non-overlapping with communication media (donot include communication media). Communication media embodiescomputer-readable instructions, data structures, program modules orother data in a modulated data signal such as a carrier wave. The term“modulated data signal” means a signal that has one or more of itscharacteristics set or changed in such a manner as to encode informationin the signal. By way of example, and not limitation, communicationmedia includes wireless media such as acoustic, RF, infrared and otherwireless media, as well as wired media. Embodiments are also directed tosuch communication media that are separate and non-overlapping withembodiments directed to computer-readable storage media.

As noted above, computer programs and modules (including applicationprograms 3032 and other programs 3034) may be stored on the hard disk,magnetic disk, optical disk, ROM, RAM, or other hardware storage medium.Such computer programs may also be received via network interface 3050,serial port interface 3042, or any other interface type. Such computerprograms, when executed or loaded by an application, enable computingdevice 3000 to implement features of embodiments discussed herein.Accordingly, such computer programs represent controllers of thecomputing device 3000.

Embodiments are also directed to computer program products comprisingcomputer code or instructions stored on any computer-readable medium.Such computer program products include hard disk drives, optical diskdrives, memory device packages, portable memory sticks, memory cards,and other types of physical storage hardware.

IV. Example Embodiments

In a first embodiment, a method in a computing device for visualizingAPI (application programming interface) metadata in a workflow designercomprises: enabling a workflow step to be selected by a developer forinclusion in a workflow; rendering a representation of the selectedworkflow step in a graphical user interface (GUI) displayed by a displayscreen of the computing device; accessing interface definitioninformation for metadata defining an API associated with the workflowstep; analyzing the metadata for a first input parameter of the API;rendering in association with the rendered representation of theworkflow step a first input control corresponding to the first inputparameter; and enabling the developer to interact with the first inputcontrol to select a first parameter value for the first input parameter,wherein the first selected parameter value is provided to and affectsoperation of at least one of an application or service associated withthe workflow step during operation of the workflow.

In an embodiment, the enabling the developer to interact with the firstinput control to select a first parameter value for the first inputparameter comprises: retrieving a dynamic list of selectable values forthe first input parameter value; and enabling the first input parametervalue to be selected from the dynamic list by interacting with the firstinput control.

In an embodiment, the retrieving a dynamic list of selectable values forthe first parameter value comprises: analyzing the metadata to determinean address to direct an API call to retrieve the dynamic list;performing the API call; and receiving the dynamic list.

In an embodiment, the method further comprises: receiving a selection ofthe first parameter value from the dynamic list from interaction withthe first input control; selecting a second input parameter of the APIbased on the selection of the first parameter value; rendering inassociation with the rendered representation of the workflow step asecond input control corresponding to the second input parameter; andenabling the developer to interact with the second input control toselect a second parameter value for the second input parameter.

In an embodiment, the method further comprises: enabling the developerto interact with the second input control to select a second parametervalue for the first input parameter such that multiple parameter valuesare selected for the first input parameter.

In an embodiment, the enabling the developer to interact with the firstinput control to select a first parameter value for the first inputparameter comprises: enabling the developer to select the firstparameter value from an output of a prior workflow step.

In an embodiment, the method further comprises: rendering in associationwith the rendered representation of the workflow step a second inputcontrol corresponding to a second input parameter; and automaticallypopulating the second input control with a second input parameter valuethat is an output parameter value of a prior workflow step of theworkflow.

In another embodiment, a system comprises: at least one processorcircuit; and at least one memory that stores program code configured tobe executed by the at least one processor circuit, the program codecomprising: a step selector configured to enable a workflow step to beselected by a developer for inclusion in a workflow, and to render arepresentation of the selected workflow step in a graphical userinterface (GUI) displayed by a display screen; a metadata analyzerconfigured to access interface definition information for metadatadefining an API associated with the workflow step, and to analyze themetadata for a first input parameter of the API; and a stepconfiguration UI generator configured to render in association with therendered representation of the workflow step a first input controlcorresponding to the first input parameter, and to enable the developerto interact with the first input control to select a first parametervalue for the first input parameter.

In an embodiment, the system further comprises: a list retrieverconfigured to retrieve a dynamic list of selectable values for the firstinput parameter value; and the step configuration UI generator isconfigured to enable the first input parameter value to be selected fromthe dynamic list by interaction with the first input control.

In an embodiment, the list retriever comprises: an API caller configuredto analyze the metadata to determine an address to direct an API call toretrieve the dynamic list, perform the API call, and receive the dynamiclist.

In an embodiment, the control interface is configured to receive aselection of the first parameter value from the dynamic list frominteraction with the first input control; the system further including:an input parameter selector configured to select a second inputparameter of the API based on the selection of the first parametervalue; and the step configuration UI generator is configured to renderin association with the rendered representation of the workflow step asecond input control corresponding to the second input parameter andenable the developer to interact with the second input control to selecta second parameter value for the second input parameter.

In an embodiment, the step configuration UI generator is configured toenable the developer to interact with the second input control to selecta second parameter value for the first input parameter such thatmultiple parameter values are selected for the first input parameter.

In an embodiment, the step configuration UI generator is configured toenable the developer to select the first parameter value from an outputof a prior workflow step.

In an embodiment, the system further comprises: a control populatorconfigured to automatically populate the second input control with asecond input parameter value that is an output parameter value of aprior workflow step of the workflow.

In another embodiment, a method in a computing device for developing aworkflow to include push notification functionality comprises: enablinga push notification workflow step to be selected by a developer forinclusion in a workflow that includes at least one other workflow step,the push notification workflow step configured to issue a pushnotification when encountered in the work flow and to wait for aresponse before enabling the workflow to continue; and rendering arepresentation of the selected push notification workflow step in agraphical user interface (GUI) displayed by a display screen of thecomputing device.

In an embodiment, the method further comprises: enabling a developer todefine at least one recipient and at least one response option for theat least one recipient for the selected push notification workflow step;and saving the configured push notification to workflow logic thatdefines the workflow.

In another embodiment, a system for developing a workflow to includepush notification functionality comprises: at least one processorcircuit; and at least one memory that stores program code configured tobe executed by the at least one processor circuit, the program codecomprising: a step selector configured to enable a push notificationworkflow step to be selected by a developer for inclusion in a workflowthat includes at least one other workflow step, the push notificationworkflow step configured to issue a push notification when encounteredin the work flow and to wait for a response before enabling the workflowto continue, and to render a representation of the selected pushnotification workflow step in a graphical user interface (GUI) displayedby a display screen of the computing device; and a step configuration UIgenerator configured to enable configuration of the selected pushnotification to define at least one recipient and at least one responseoption for the at least one recipient, and to enable the configured pushnotification to be saved to workflow logic that defines the workflow.

In an embodiment, the step configuration UI generator is configured toenable a developer to define at least one recipient and at least oneresponse option for the at least one recipient for the selected pushnotification workflow step, and to save the configured push notificationto workflow logic that defines the workflow.

In another embodiment, a method in a computing device for developing asecond workflow to subscribe to a first workflow comprises: enabling asubscription workflow step to be selected by a developer for inclusionin the second workflow, the subscription workflow step configured towait for output information from a selectable subscribed-to workflowbefore enabling the second workflow to continue; rendering arepresentation of the selected subscription workflow step in a graphicaluser interface (GUI) displayed by a display screen of the computingdevice; rendering a subscription selection control in the renderedrepresentation of the selected subscription workflow step; enabling theselected subscription workflow step to be configured to subscribe to afirst workflow indicated by interaction by the developer with thesubscription selection control; and saving the configured subscriptionworkflow step to workflow logic that defines the second workflow.

In another embodiment, a system in a computing device for developing asecond workflow to subscribe to a first workflow, comprises: at leastone processor circuit; and at least one memory that stores program codeconfigured to be executed by the at least one processor circuit, theprogram code comprising: a step selector configured to enable asubscription workflow step to be selected by a developer for inclusionin the second workflow, the subscription workflow step configured towait for output information from a selectable subscribed-to workflowbefore enabling the second workflow to continue, and to render arepresentation of the selected subscription workflow step in a graphicaluser interface (GUI) displayed by a display screen of the computingdevice; and a step configuration UI generator configured to render asubscription selection control in the rendered representation of theselected subscription workflow step, to enable the selected subscriptionworkflow step to be configured to subscribe to a first workflowindicated by interaction by the developer with the subscriptionselection control, and to enable the configured subscription workflowstep to be saved to workflow logic that defines the second workflow.

V. Conclusion

While various embodiments of the present invention have been describedabove, it should be understood that they have been presented by way ofexample only, and not limitation. It will be understood by those skilledin the relevant art(s) that various changes in form and details may bemade therein without departing from the spirit and scope of theinvention as defined in the appended claims. Accordingly, the breadthand scope of the present invention should not be limited by any of theabove-described exemplary embodiments, but should be defined only inaccordance with the following claims and their equivalents.

What is claimed is:
 1. A method in a computing device for developing aworkflow to include push notification functionality, comprising:enabling a push notification workflow step to be selected by a developerfor inclusion in a workflow that includes at least one other workflowstep, the push notification workflow step configured to issue a pushnotification when encountered in the work flow and to wait for aresponse before enabling the workflow to continue; and rendering arepresentation of the selected push notification workflow step in agraphical user interface (GUI) displayed by a display screen of thecomputing device.
 2. The method of claim 1, further comprising: enablinga developer to define at least one recipient and at least one responseoption for the at least one recipient for the selected push notificationworkflow step; and saving the configured push notification to workflowlogic that defines the workflow.
 3. The method of claim 1, furthercomprising: enabling a conditional workflow step to be selected by thedeveloper for inclusion in the workflow following the push notificationworkflow step, the conditional workflow step configured to perform anaction that depends on the response to the push notification; andrendering a representation of the selected conditional workflow step inthe GUI displayed by the display screen of the computing device.
 4. Themethod of claim 1, wherein the push notification is configured to beissued to an application that executes in a mobile device, theapplication configured to display the push notification on a displayscreen of the mobile device.
 5. The method of claim 1, furthercomprising: enabling a developer to define a link to an item for theselected push notification workflow step, the push notificationincluding the link for interaction by a user that receives the pushnotification.
 6. The method of claim 1, wherein the push notificationincludes a control for interaction by a user that receives the pushnotification to approve or reject.
 7. The method of claim 1, wherein thepush notification includes a control for interaction by a user to inputa signature of the user.
 8. A system for developing a workflow toinclude push notification functionality, comprising: at least oneprocessor circuit; and at least one memory that stores program codeconfigured to be executed by the at least one processor circuit, theprogram code comprising: a step selector configured to enable a pushnotification workflow step to be selected by a developer for inclusionin a workflow that includes at least one other workflow step, the pushnotification workflow step configured to issue a push notification whenencountered in the work flow and to wait for a response before enablingthe workflow to continue, and render a representation of the selectedpush notification workflow step in a graphical user interface (GUI)displayed by a display screen of the computing device.
 9. The system ofclaim 8, further comprising: a step configuration UI generatorconfigured to enable a developer to define at least one recipient and atleast one response option for the at least one recipient for theselected push notification workflow step, and save the configured pushnotification to workflow logic that defines the workflow.
 10. The methodof claim 8, wherein the step selector is further configured to: enable aconditional workflow step to be selected by the developer for inclusionin the workflow following the push notification workflow step, theconditional workflow step configured to perform an action that dependson the response to the push notification; and render a representation ofthe selected conditional workflow step in the GUI displayed by thedisplay screen of the computing device.
 11. The method of claim 8,wherein the push notification is configured to be issued to anapplication that executes in a mobile device, the application configuredto display the push notification on a display screen of the mobiledevice.
 12. The method of claim 8, further comprising: a stepconfiguration UI generator configured to enable a developer to define alink to an item for the selected push notification workflow step, thepush notification including the link for interaction by a user thatreceives the push notification.
 13. The method of claim 8, wherein thepush notification includes a control for interaction by a user thatreceives the push notification to approve or reject.
 14. The method ofclaim 8, wherein the push notification includes a control forinteraction by a user to input a signature of the user.
 15. A computingdevice for developing a workflow to include push notificationfunctionality, comprising: a processor circuit; and a memory that storesprogram code configured to be executed by the processor circuit toperform functions, the functions including: enabling a push notificationworkflow step to be selected by a developer for inclusion in a workflowthat includes at least one other workflow step, the push notificationworkflow step configured to issue a push notification when encounteredin the work flow and to wait for a response before enabling the workflowto continue; and rendering a representation of the selected pushnotification workflow step in a graphical user interface (GUI) displayedby a display screen of the computing device.
 16. The computing device ofclaim 15, wherein the functions further comprise: enabling a developerto define at least one recipient and at least one response option forthe at least one recipient for the selected push notification workflowstep; and saving the configured push notification to workflow logic thatdefines the workflow.
 17. The computing device of claim 15, wherein thefunctions further comprise: enabling a conditional workflow step to beselected by the developer for inclusion in the workflow following thepush notification workflow step, the conditional workflow stepconfigured to perform an action that depends on the response to the pushnotification; and rendering a representation of the selected conditionalworkflow step in the GUI displayed by the display screen of thecomputing device.
 18. The computing device of claim 15, wherein the pushnotification is configured to be issued to an application that executesin a mobile device, the application configured to display the pushnotification on a display screen of the mobile device.
 19. The computingdevice of claim 15, wherein the functions further comprise: enabling adeveloper to define a link to an item for the selected push notificationworkflow step, the push notification including the link for interactionby a user that receives the push notification.
 20. The computing deviceof claim 15, wherein the push notification includes a control forinteraction by a user that receives the push notification to approve orreject.